package com.huangfuyi.process.dao;

import com.huangfuyi.process.entity.node.EPNodeEntity;
import com.huangfuyi.process.entity.node.EPNodeNextConfigEntity;

import java.util.List;

public interface EPCoreNodeDao<T extends EPNodeEntity, E extends EPNodeNextConfigEntity> {

    /**
     * 保存流程节点配置信息
     */
    int addAll(List<? extends EPNodeEntity> nodes);

    /**
     * 删除指定流程模板的所有节点配置信息
     */
    int deleteAllByModelId(String modelId);

    /**
     * 查询节点配置信息
     */
    T queryById(String modelId, String nodeId);

    /**
     * 查询指定流程模板的所有节点配置信息
     */
    List<T> queryByModelId(String modelId);

    /**
     * 保存节点指向配置信息
     */
    int addAllNextConfigs(List<? extends EPNodeNextConfigEntity> nextConfigs);

    /**
     * 删除指定流程模板的所有节点的指向配置信息
     */
    int deleteAllNextConfigsByModelId(String modelId);

    /**
     * 查询指定节点的所有指向配置
     */
    List<E> queryNextConfigByNodeId(String modelId, String nodeId);

}
